package cn.caskm.souvenirshopsystem.domain.po;

import cn.caskm.souvenirshopsystem.utils.DateUtils;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("coupon")
public class Coupon implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 优惠券ID
     */
    @TableId(value = "coupon_id", type = IdType.AUTO)
    private Integer couponId;

    /**
     * 优惠券名称
     */
    private String couponName;

    /**
     * 优惠券类型 0:满减券 1:折扣券 2:免费券
     */
    private String couponType;

    /**
     * 优惠金额（满减券）
     */
    private BigDecimal discountAmount;

    /**
     * 折扣比例（折扣券，如0.8表示8折）
     */
    private BigDecimal discountRate;

    /**
     * 最低消费金额（满减条件）
     */
    private BigDecimal minAmount;

    /**
     * 最大优惠金额（折扣券的封顶金额）
     */
    private BigDecimal maxDiscountAmount;

    /**
     * 发放总数量
     */
    private Integer totalCount;

    /**
     * 已使用数量
     */
    private Integer usedCount;

    /**
     * 剩余数量
     */
    private Integer remainCount;

    /**
     * 每人限领数量
     */
    private Integer limitPerUser;

    /**
     * 状态 0:未发布 1:发布中 2:已结束 3:已停用
     */
    private String status;

    /**
     * 开始时间
     */
    @JsonFormat(pattern = DateUtils.DATE_TIME_FORMAT)
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    @JsonFormat(pattern = DateUtils.DATE_TIME_FORMAT)
    private LocalDateTime endTime;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = DateUtils.DATE_TIME_FORMAT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = DateUtils.DATE_TIME_FORMAT)
    private LocalDateTime updateTime;

}
